package bdcin.fachada;

import java.util.List;

import bdcin.classesbasicas.Area;
import bdcin.classesbasicas.Docente;
import bdcin.classesbasicas.DocenteUtilizado;
import bdcin.classesbasicas.Documento;
import bdcin.classesbasicas.Usuario;
import bdcin.excecoes.BuscarException;
import bdcin.excecoes.EditarException;
import bdcin.excecoes.EmailException;
import bdcin.excecoes.InserirException;
import bdcin.excecoes.RemoverException;

public interface IBDCIn {
	
	String SERVICE_NAME = "BDCIn Service";

	//PARTE DOCENTE
	public void inserir(Docente docente) throws InserirException;

	public void alterar(Docente docente) throws EditarException;

	public void removerDocente(Long id) throws RemoverException;

	public Docente buscarDocente(Long id)  throws BuscarException;

	public List<Docente> buscarDocentePorNome(String nome) throws BuscarException;

	public Docente buscaDocentePorNomeUnico(String nome) throws BuscarException;

	public List<Docente> buscaDocentePorLogin(String login) throws BuscarException;

	public Docente buscaDocentePorLoginUnico(String login) throws BuscarException;

	public List<Docente> buscaDocentePorArea(String area) throws BuscarException;
	
	public Docente buscaDocentePorEmailUnico(String email) throws BuscarException;
	
	
	
	//PARTE DOCENTE_UTILIZADO
	public void inserir(DocenteUtilizado docenteUtilizado) throws InserirException ;

	public void alterar(DocenteUtilizado docenteUtilizado) throws EditarException ;

	public void removerDocenteUtilizado(Long id) throws RemoverException;

	public DocenteUtilizado buscarDocenteUtilizado(Long id) throws BuscarException;
	
	public DocenteUtilizado buscaDocenteUtilizadoPorDocente(Long id) throws BuscarException;
	
	public List<DocenteUtilizado> listarDocentesUtilizados() throws BuscarException;

	


	//PARTE USUARIO
	public void inserir(Usuario usuario) throws InserirException ;

	public void alterar(Usuario usuario) throws EditarException ;

	public void removerUsuario(Long id) throws RemoverException;

	public Usuario buscarUsuario(Long id) throws BuscarException;

	public List<Usuario> buscarUsuarioPorNome(String nome) throws BuscarException;

	public Usuario buscaUsuarioPorNomeUnico(String nome) throws BuscarException;

	public List<Usuario> buscaUsuarioPorLogin(String login) throws BuscarException;

	public Usuario buscaUsuarioPorLoginUnico(String login) throws BuscarException;



	//PARTE AREA
	public void inserir(Area area) throws InserirException ;

	public void alterar(Area area) throws EditarException ;

	public void removerArea(Long id) throws RemoverException;

	public Area buscarArea(Long id) throws BuscarException;

	public Area buscarAreaPorNome(String nome) throws BuscarException;

	public List<Area> listarAreas() ;


	//PARTE DOCUMENTO
	public void inserir(Documento doc) throws InserirException ;

	public void removerDocumento(Long id) throws RemoverException;
	
	public void atualizarDocumento(Documento documento) throws EditarException ;
	
	public Documento buscarDocumento(Long id) throws BuscarException;

	public Documento buscarDocumentoPorAlunoTG(String aluno) throws BuscarException;

	public Documento buscarDocumentoPorAlunoDissertacao(String aluno) throws BuscarException;

	public Documento buscarDocumentoPorAlunoTese(String aluno) throws BuscarException;

	public List<Documento> buscarDocumentoPorTitulo(String titulo) throws BuscarException;

	public List<Documento> buscarDocumentoPorAluno(String aluno) throws BuscarException;

	public List<Documento> buscarDocumentoPorArea(String area) throws BuscarException;

	public List<Documento> buscarDocumentoPorOrientador(String orientador) throws BuscarException;

	public List<Documento> buscarDocumentoPorCoOrientador(String coOrientador) throws BuscarException;
	
	public List <Documento> buscarConteudo(String consulta);
	
	
	public void enviarEmail(String email, String assunto, String mensagem) throws EmailException;
	
	
}
